建立 keytab 檔案

您可以使用同一個賬戶在所有叢集節點上進行身分驗證。為此,請為這些節點中的每一個建立一個包含服務主體名稱 (SPN)keytab 檔案。建立 keytab 檔案時,必須使用一個屬性來產生加密鹽,它會修改雜湊函數輸入。

您必須使用任何方便的方法儲存產生的“加密鹽”,以便以後將新的 SPN 新增到 keytab 檔案時加以使用。

您還可以為需要設定 Kerberos 身分驗證的每個叢集節點建立單獨的 Active Directory 使用者帳戶。

在您建立keytab 檔案之前

在建立keytab 檔案之前,對於每個 SPN,請確保它未在 Active Directory 中註冊。您可以透過執行以下命令來執行此操作:setspn -Q <SPN>,其中 <SPN> 具有以下結構:HTTP/<叢集節點的完全限定網域名稱 (FQDN)>@<Active Directory 網域的網域名稱(大寫)>

該命令應傳回“未找到這樣的SPN”,這意味著所討論的 SPN 未註冊。如果 SPN 已註冊,在建立 keytab 檔案之前,您需要從帳戶中取消分配 SPN 或在分配了此 SPN 的 Active Directory 中刪除帳戶本身。

檢查一個控制節點和兩個次要節點的 SPN 的範例:

setspn -Q HTTP/control-01.test.local@TEST.LOCAL

setspn -Q HTTP/secondary-01.test.local@TEST.LOCAL

setspn -Q HTTP/secondary-02.test.local@TEST.LOCAL

建立 keytab 檔案

在網域管理員帳戶下,在網域控制器伺服器或作為網域一部分的 Windows Server 電腦上建立 keytab 檔案。

要建立使用一個使用者帳戶的 keytab 檔案:

  1. Active Directory 使用者和電腦管理單元中,建立一個使用者帳戶(例如名為 control-user)。
  2. 若要使用 AES256-SHA1 加密演算法,請在 Active Directory 使用者和電腦管理單元中執行以下操作:
    1. 開啟建立的帳戶的內容。
    2. 帳戶標籤中,選取此帳戶支援 Kerberos AES 256 位加密核取方塊。
  3. 使用 ktpass 工具為 control-user 建立 keytab 檔案。為此,請在命令列執行以下指令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<控制節點的完全限定網域名稱 (FQDN)>@<大寫的領域 Active Directory 網域名稱> -mapuser control-user@<大寫的領域 Active Directory 網域名稱> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <檔案路徑>\<檔案名稱>.keytab

    在執行此命令時,該工具將提示您輸入 control-user 密碼。

    控制節點的 SPN 將被新增到已建立的 keytab 檔案。螢幕將顯示產生的加密鹽:加密鹽為“<雜湊值>”的雜湊密碼。

  4. 對於每個叢集節點,將 SPN 項目新增到 keytab 檔案中。為此,執行以下指令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<節點的完全限定網域名稱 (FQDN)>@<大寫的領域 Active Directory 網域名稱> -mapuser control-user@<大寫的領域 Active Directory 網域名稱> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <先前建立的檔案路徑和名稱>.keytab -out <路徑和新名稱>.keytab -setupn -setpass -rawsalt "<在第 3 步建立 keytab 檔案時獲取的加密鹽雜湊值>"

    在執行此命令時,該工具將提示您輸入 control-user 密碼。

將建立 keytab 檔案。此檔案將建立叢集節點的所有已新增的 SPN。

範例:

例如,您需要建立一個包含以下 3 個節點的 SPN keytab 檔案:control-01.test.localsecondary-01.test.localsecondary-02.test.local

要在 C:\keytabs\ 資料夾中建立一個名為 filename1.keytab 且包含控制節點 SPN 的檔案,請執行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out C:\keytabs\filename1.keytab

假定您已收到加密鹽 "TEST.LOCALHTTPcontrol-01.test.local"

要再新增一個 SPN,請執行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

要新增第三個 SPN,請執行以下指令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

這將建立一個名為 filename3.keytab 的檔案,其中包含全部三個已新增的 SPN。

要為每個節點建立使用單獨使用者帳戶的 keytab 檔案:

  1. Active Directory 使用者和電腦管理單元中,為每個叢集節點建立一個單獨的使用者帳戶(例如,可以建立 control-usersecondary1-usersecondary2-user 等使用者帳戶)。
  2. 若要使用 AES256-SHA1 加密演算法,請在 Active Directory 使用者和電腦管理單元中執行以下操作:
    1. 開啟建立的帳戶的內容。
    2. 帳戶標籤中,選取此帳戶支援 Kerberos AES 256 位加密核取方塊。
  3. 使用 ktpass 工具為 control-user 建立 keytab 檔案。為此,請在命令列執行以下指令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<控制節點的完全限定網域名稱 (FQDN)>@<大寫的領域 Active Directory 網域名稱> -mapuser control-user@<大寫的領域 Active Directory 網域名稱> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <檔案路徑>\<檔案名稱>.keytab

    在執行此命令時,該工具將提示您輸入 control-user 密碼。

    控制節點的 SPN 將被新增到已建立的 keytab 檔案。

  4. 對於每個叢集節點,將 SPN 項目新增到 keytab 檔案中。為此,執行以下指令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<節點的完全限定網域名稱 (FQDN)>@<大寫的領域 Active Directory 網域名稱> -mapuser secondary1-user@<大寫的領域 Active Directory 網域名稱> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <先前建立的檔案路徑和名稱>.keytab -out <路徑和新名稱>.keytab

    在執行此命令時,該工具將提示您輸入 secondary1-user 密碼。

將建立 keytab 檔案。此檔案將建立叢集節點的所有已新增的 SPN。

範例:

例如,您需要建立一個包含以下 3 個節點的 SPN keytab 檔案:control-01.test.localsecondary-01.test.localsecondary-02.test.local

要在 C:\keytabs\ 資料夾中建立一個名為 filename1.keytab 且包含控制節點 SPN 的檔案,請執行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out C:\keytabs\filename1.keytab

要再新增一個 SPN,請執行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser secondary1-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab

要新增第三個 SPN,請執行以下指令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser secondary2-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab

這將建立一個名為 filename3.keytab 的檔案,其中包含全部三個已新增的 SPN。

在您建立 keytab 檔案之後

在建立 keytab 檔案之後,對於每個 SPN,請確保它已註冊並指派給相關帳戶。您可以透過執行以下命令來執行此操作:setspn -Q <SPN>,其中 <SPN> 具有以下結構:HTTP/<叢集節點的完全限定網域名稱 (FQDN)>@<Active Directory 網域的網域名稱(大寫)>

該命令必須傳回“找到現有的 SPN”以及分配了 SPN 的帳戶。

此外,建立 keytab 檔案後,您可以檢查指派給相關帳戶的 SPN 清單。為此,您可以執行以下命令:setspn -L <帳戶>,其中<帳戶>具有以下結構:<使用者名稱>@<Active Directory 網域的網域名稱(大寫)>

如果使用一個帳戶建立了 keytab 檔案,則該命令應傳回為其建立 keytab 檔案的所有 SPN 的清單。如果為每個節點建立了單獨帳戶的 keytab 檔案,則該命令應傳回一個指派給特定帳戶的 SPN。

針對一個帳戶的範例指令:

setspn -L control-user@TEST.LOCAL

每個節點單獨帳戶的範例命令:

setspn -L control-user@TEST.LOCAL

setspn -L secondary1-user@TEST.LOCAL

setspn -L secondary2-user@TEST.LOCAL

頁面頂端